<?php 
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/parameters/ParameterGetter.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/exceptions/FormulaireException.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/writerJSON/WriterJSON.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/string/StringUtils.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/service/uc/albumphoto/GererAlbumPhotoService.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/service/entite/Entite.php';

	class GererAlbumPhotoAction {
		public static function ajouter() {
			$albumPhotoEntite = GererAlbumPhotoService::ajouterAlbumPhoto();
			ParameterGetter::setSessionParameter("albumPhotoEntite", $albumPhotoEntite);
			WriterJSON::echoSuccessState();
		}
		
		public static function modifier() {
			$id = ParameterGetter::getRequestParameter("id", true);
			$albumPhotoEntite = GererAlbumPhotoService::modifierAlbumPhoto($id);
			ParameterGetter::setSessionParameter("albumPhotoEntite", $albumPhotoEntite);	
			WriterJSON::echoDonnees(array("nom" => $albumPhotoEntite->nom, "commentaire" => $albumPhotoEntite->commentaire, "date" => $albumPhotoEntite->date));
		}
		
		public static function getIdModifie() {
			$albumPhotoEntite = ParameterGetter::getSessionParameter("albumPhotoEntite", true);
			$id = $albumPhotoEntite->id;
			WriterJSON::echoDonnees (array("id" => "$id"));
		}
		
		public static function valider() {
			$albumPhotoEntite = ParameterGetter::getSessionParameter("albumPhotoEntite", true);
			$albumPhotoEntite->nom = ParameterGetter::getRequestParameter("nom", true);
			$albumPhotoEntite->commentaire = ParameterGetter::getRequestParameter("commentaire", true);
			$albumPhotoEntite->date = ParameterGetter::getRequestParameter("date", true);
			
			GererAlbumPhotoAction::verifierAlbumPhotoAvantValidation($albumPhotoEntite);
			GererAlbumPhotoService::validerAlbumPhoto($albumPhotoEntite);
			ParameterGetter::removeSessionParameter("albumPhotoEntite"); 
			WriterJSON::echoSuccess ("L'album photo a bien été ajouté/modifié");
		}
		
		/**
		 * Utilisé par la reprise de données des albums
		 */
		public static function insertWithValues() {
			$id = ParameterGetter::getRequestParameter("id", true);
			$nom = ParameterGetter::getRequestParameter("nom", true);
			$commentaire = ParameterGetter::getRequestParameter("commentaire", true);
			
			GererAlbumPhotoService::insertWithValues($id, $nom, $commentaire);
			WriterJSON::echoSuccess ("L'album photo a bien été ajouté");
		}
		
		public static function annuler() {
			ParameterGetter::removeSessionParameter("albumPhotoEntite");
			WriterJSON::echoSuccessState();
		}
		
		public static function supprimer() {
			$id = ParameterGetter::getRequestParameter("id", true);
			GererAlbumPhotoService::supprimerAlbumPhoto($id);
			WriterJSON::echoSuccess ("L'album photo a bien été supprimé");
		}
		
		public static function createRepertoireAlbumPhoto() {
			$albumPhotoId = ParameterGetter::getRequestParameter("id", true);
			GererAlbumPhotoService::createRepertoireAlbumPhoto($albumPhotoId);
			WriterJSON::echoSuccess ("Le répertoire de l'album '$albumPhotoId' a bien été créé");
		}
		
		public static function putAlbumPhotoEnSession() {
			$id = ParameterGetter::getRequestParameter("id", true);
			$albumPhotoEntite = GererAlbumPhotoService::getAlbumPhotoByID($id, true);
			ParameterGetter::setSessionParameter("albumPhotoEntite", $albumPhotoEntite);
			return $albumPhotoEntite;
		}
		
		public static function getCouvertureAlbum() {
			$albumPhotoEntite = ParameterGetter::getSessionParameter("albumPhotoEntite", true);
			$albumPhotoEntite = GererAlbumPhotoService::loadCouverture($albumPhotoEntite);
			ParameterGetter::setSessionParameter("albumPhotoEntite", $albumPhotoEntite);
			return $albumPhotoEntite->couverture;
		}
		
		public static function getListeMiniature() {
			$albumPhotoEntite = ParameterGetter::getSessionParameter("albumPhotoEntite", true);
			$listeMiniature = GererAlbumPhotoService::getListeMiniature($albumPhotoEntite);
			return $listeMiniature;
		}
		
		public static function setCouvertureAlbum() {
			$albumPhotoEntite = ParameterGetter::getSessionParameter("albumPhotoEntite", true);
			
			//récupère le nom de la photo
			$nomCompletCouvertureAlbum = ParameterGetter::getRequestParameter("nomMiniatureAlbum", true);
			
			//applique la photo à l'album
			if ($nomCompletCouvertureAlbum == "") {
				$albumPhotoEntite->couverture = null;	
			} else {
				//récupère la photo
				$photoEntite = GererAlbumPhotoService::getPhotoFromAlbum($albumPhotoEntite, $nomCompletCouvertureAlbum);
				$albumPhotoEntite->couverture = $photoEntite;
			}
			
			//sauvegarde l'album
			GererAlbumPhotoService::validerAlbumPhoto($albumPhotoEntite);
			WriterJSON::echoSuccess ("La miniature a bien été modifiée");
		}

 		/*public static function checkImageSupprimeeNonMiniatureAlbum() {
 			$nomCompletMiniatureAlbum = ParameterGetter::getRequestParameter("nomCompletMiniatureAlbum",true);
 			$concertEntite = ParameterGetter::getSessionParameter("concertEntite", true);
 			if ($concertEntite->nomCompletMiniatureAlbum == $nomCompletMiniatureAlbum) {
 				//Si la photo qui vient d'être supprimée est la miniature d'album, on supprime
 				GererConcertAction::setMiniatureAlbumForConcert("", $concertEntite);
 			}
 			WriterJSON::echoSuccessState();
 		}*/
		
		public static function getListeMiniatureFromAlbumId($idAlbumPhoto) {
			$listeMiniature = GererAlbumPhotoService::getListeMiniatureFromAlbumId($idAlbumPhoto);
			return $listeMiniature;
		}
		
		public static function getPhotoInCurrentAlbum($nomPhoto) {
			$albumPhotoEntite = ParameterGetter::getSessionParameter("albumPhotoEntite", true);
			$listeMiniature = GererAlbumPhotoService::getPhotoFromAlbum($albumPhotoEntite, $nomPhoto);
			return $listeMiniature;
		}
		
		public static function deletePhoto() {
			$albumPhotoEntite = ParameterGetter::getSessionParameter("albumPhotoEntite", true);
				
			//récupère le nom de la photo
			$nomPhoto = ParameterGetter::getRequestParameter("nomPhoto", true);
			GererAlbumPhotoService::deletePhoto($albumPhotoEntite, $nomPhoto);
			
			WriterJSON::echoSuccessState();
		}
		
		private static function verifierAlbumPhotoAvantValidation($albumPhotoEntite) {
			$exception = new FormulaireException();
			if (StringUtils::isEmpty($albumPhotoEntite->nom)) {
				$exception->ajouterChampNonRenseigne("Nom");
			}
			
			if ($exception->contientErreurs()) {
				throw $exception;
			}
		}
	}
?>